H2 ডেটাবেজে Stored Procedures তৈরি করা একটি শক্তিশালী পদ্ধতি যা ডেটাবেজের মধ্যে বিভিন্ন SQL অপারেশন একত্রিত করে একটি নির্দিষ্ট কাজ সম্পাদন করতে সাহায্য করে। Stored Procedures ডেটাবেজে সংরক্ষিত থাকে এবং একাধিক SQL অপারেশন সমন্বিতভাবে একসাথে কাজ করতে পারে। এতে কোড পুনরায় ব্যবহারযোগ্যতা বাড়ে এবং ডেটাবেজের পারফরম্যান্সও উন্নত হয়।
H2 তে Stored Procedure তৈরি করার জন্য CREATE PROCEDURE
কমান্ড ব্যবহার করা হয়।
Stored Procedure হল একটি প্রি-ডিফাইনড SQL কোড ব্লক, যা ডেটাবেজে সংরক্ষিত থাকে এবং একটি নির্দিষ্ট কাজ বা লজিক সম্পাদন করে। এটি ডেটাবেজের মধ্যে একাধিক SQL অপারেশন বা জটিল লজিক রক্ষা করার জন্য ব্যবহৃত হয়। একবার তৈরি হওয়ার পর, এটি সহজে কল করা যায় এবং পুনরায় ব্যবহৃত হতে পারে।
H2 ডেটাবেজে Stored Procedures তৈরি করার জন্য CREATE PROCEDURE
কমান্ড ব্যবহার করা হয়, এবং তারপর আপনি সেই procedure টি CALL স্টেটমেন্ট দিয়ে কল করতে পারেন।
H2 ডেটাবেজে Stored Procedure তৈরি করতে নিচের পদ্ধতি অনুসরণ করতে পারেন:
ধরা যাক, আমরা একটি Stored Procedure তৈরি করতে চাই যা একটি টেবিল users
তে নতুন ইউজার যোগ করবে।
CREATE PROCEDURE AddUser(id INT, name VARCHAR, age INT)
BEGIN
INSERT INTO users (id, name, age) VALUES (id, name, age);
END;
এখানে:
AddUser
: Stored Procedure এর নাম।id
, name
, age
: এই প্যারামিটারগুলি প্রক্রিয়া চলাকালীন ব্যবহারকারী থেকে ইনপুট হিসেবে নেওয়া হবে।INSERT INTO users (id, name, age)
: এটি users
টেবিলে নতুন রেকর্ড ইনসার্ট করার SQL কোড।এবার এই Stored Procedure কল করতে হলে CALL
কিওয়ার্ড ব্যবহার করা হবে। এর মাধ্যমে আপনি সেই procedure টি কল করতে পারবেন এবং প্যারামিটার পাস করতে পারবেন।
CALL AddUser(1, 'John Doe', 30);
এটি users
টেবিলে id = 1
, name = 'John Doe'
, এবং age = 30
সহ একটি নতুন রেকর্ড ইনসার্ট করবে।
Stored Procedure তে আপনি Error Handling, Conditions, এবং Loops ইত্যাদি যুক্ত করতে পারেন। যেমন:
CREATE PROCEDURE AddUserWithCheck(id INT, name VARCHAR, age INT)
BEGIN
-- চেক করুন যে, ইউজারের বয়স 18 বছরের বেশি কিনা
IF age >= 18 THEN
INSERT INTO users (id, name, age) VALUES (id, name, age);
ELSE
-- যদি বয়স 18 বছরের কম হয়, ত则 একটি error ফেলে দিন
THROW 'Age must be 18 or older.';
END IF;
END;
এখানে:
IF age >= 18 THEN
: যদি ইউজারের বয়স 18 বছরের বেশি হয়, তবে ইউজারকে ইনসার্ট করা হবে।THROW 'Age must be 18 or older.'
: যদি বয়স 18 বছরের কম হয়, তবে একটি ত্রুটি (error) ফেলে দেওয়া হবে।Stored Procedure-এ একাধিক SQL কুয়েরি বা স্টেটমেন্ট থাকতে পারে। উদাহরণস্বরূপ:
CREATE PROCEDURE UpdateUserAge(id INT, newAge INT)
BEGIN
UPDATE users SET age = newAge WHERE id = id;
SELECT * FROM users WHERE id = id;
END;
এই প্রোসিজারটি দুটি স্টেটমেন্ট একসাথে এক্সিকিউট করবে:
age
আপডেট করবে।users
রেকর্ডটি ফেরত দেবে।আপনি Stored Procedures এ Parameterized Queries ব্যবহার করতে পারেন, যাতে SQL ইনজেকশন (SQL Injection) প্রতিরোধ করা যায়।
CREATE PROCEDURE GetUserByName(name VARCHAR)
BEGIN
SELECT * FROM users WHERE name = name;
END;
এখানে:
name
: এই প্যারামিটারটি SQL কুয়েরির মধ্যে নিরাপদে ইনপুট হিসেবে ব্যবহৃত হবে।ডিবাগিং: যদি আপনার Stored Procedure তে কোনো সমস্যা হয়, তবে আপনি SHOW PROCEDURES
কমান্ড ব্যবহার করে সমস্ত Stored Procedure দেখতে পারেন এবং DESCRIBE PROCEDURE
ব্যবহার করে নির্দিষ্ট একটি procedure এর বিস্তারিত দেখতে পারেন।
উদাহরণ:
SHOW PROCEDURES;
CALL
কমান্ড দিয়ে এটি পরীক্ষা করতে পারেন।CREATE PROCEDURE TransferMoney(sender INT, receiver INT, amount DECIMAL)
BEGIN
UPDATE accounts SET balance = balance - amount WHERE id = sender;
UPDATE accounts SET balance = balance + amount WHERE id = receiver;
COMMIT;
END;
H2 ডেটাবেজে Stored Procedures তৈরি এবং ব্যবহারের মাধ্যমে আপনি একাধিক SQL অপারেশনকে একত্রিত করতে পারেন এবং একটি নির্দিষ্ট কাজ সম্পাদন করতে পারেন। এটি ডেটাবেজ পরিচালনা সহজ এবং দ্রুত করে তোলে, কারণ একবার তৈরি হওয়া Stored Procedures বারবার ব্যবহার করা যেতে পারে। SQL কোডের পুনরায় ব্যবহারযোগ্যতা বৃদ্ধি পায় এবং এর মাধ্যমে লজিক প্রক্রিয়া ডেটাবেজের মধ্যে সংরক্ষণ করা হয়।
common.read_more